package vietnam.traveltools.module;

import vietnam.traveltools.AtmActivity;
import vietnam.traveltools.FoodActivity;
import vietnam.traveltools.HotelActivity;
import vietnam.traveltools.MainActivity;
import vietnam.traveltools.R;
import vietnam.traveltools.SearchActivity;
import vietnam.traveltools.TaxiActivity;
import vietnam.traveltools.TravelActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

public class VoiceAsyncTask extends AsyncTask<String, Integer, String> {
	ProgressBar progressBarSearch;
	public TextView tvSpeechResult;
	Activity context;
	LinearLayout lnSpeech;
	LinearLayout lnSpeechResult;
	TextView tvSpeech;
	SearchActivity searchActivity;

	public String arSpeech[] = { "visa", "atm", "agribank", "vietcombank",
			"du lịch", "travel", "tham quan", "chùa", "di tích", "bảo tàng",
			"nhà hàng", "quán ăn", "taxi", "gọi xe", "hotel", "khách sạn" };
	public String arATM[] = { "visa", "atm", "agribank", "vietcombank", };
	public String arTravel[] = { "du lịch", "travel", "tham quan", "chùa",
			"di tích", "bảo tàng" };
	public String arFood[] = { "nhà hàng", "quán ăn" };
	public String arTaxi[] = { "taxi", "gọi xe" };
	public String arHotel[] = { "hotel", "khách sạn","nhà nghỉ" };
	public String arLocation[] = { "maps", "địa diểm","vị trí" };
	public String arAbout[] = { "mày là ai", "ai","tên" };

	@Override
	protected String doInBackground(String... params) {

		if (resourcesDontAlreadyExist()) {
			downloadResources();
		}

		return null;
	}

	private boolean resourcesDontAlreadyExist() {
		// Here you would query your app's internal state to see if this
		// download had been performed before
		// Perhaps once checked save this in a shared preference for speed of
		// access next time
		return true; // returning true so we show the splash every time
	}

	public VoiceAsyncTask(Activity ctx, ProgressBar progressBarSearch,
			LinearLayout lnSpeech, LinearLayout lnSpeechResult,
			TextView tvSpeech, TextView tvSpeechResult) {
		context = ctx;
		progressBarSearch = this.progressBarSearch;
		lnSpeech = this.lnSpeech;
		lnSpeechResult = this.lnSpeechResult;

	}

	@Override
	protected void onPreExecute() {
		super.onPreExecute();
		progressBarSearch = (ProgressBar) context
				.findViewById(R.id.progressBarSearch);
		progressBarSearch.setVisibility(View.VISIBLE);

		lnSpeechResult = (LinearLayout) context
				.findViewById(R.id.lnSpeechResult);
		lnSpeechResult.setVisibility(View.INVISIBLE);

		lnSpeech = (LinearLayout) context.findViewById(R.id.lnSpeech);

		tvSpeech = (TextView) context.findViewById(R.id.tvSpeech);
		tvSpeechResult = (TextView) context.findViewById(R.id.tvSpeechResult);

	}

	@Override
	protected void onProgressUpdate(Integer... values) {
		super.onProgressUpdate(values);

		progressBarSearch.setProgress(values[0]);

	}

	private void downloadResources() {
		// We are just imitating some process thats takes a bit of time (loading
		// of resources / downloading)
		int count = 200;
		for (int i = 0; i < count; i++) {

			// Update the progress bar after every step
			int progress = (int) ((i / (float) count) * 100);
			publishProgress(progress);

			// Do some long loading things
			try {
				Thread.sleep(10);
			} catch (InterruptedException ignore) {
			}
		}
	}

	@Override
	protected void onPostExecute(String result) {
		super.onPostExecute(result);

		if (lnSpeech.getVisibility() == View.INVISIBLE) {
			lnSpeechResult.setVisibility(View.INVISIBLE);
		} else {
			lnSpeechResult.setVisibility(View.VISIBLE);

			Intent intent_atm = new Intent(context, AtmActivity.class);
			Intent intent_hotel = new Intent(context, HotelActivity.class);
			Intent intent_travel = new Intent(context.getApplicationContext(),
					TravelActivity.class);
			Intent intent_food = new Intent(context, FoodActivity.class);
			Intent intent_taxi = new Intent(context, TaxiActivity.class);
			///////////////////////////////////////////////////////
			// for (int i = 0; i <= arSpeech.length; i++) {
			// if (tvSpeech.getText().toString().contains(ARtRAVEL[k])) {
			// // searchActivity.showPrepare(intent_travel, "du lịch");
			// tvSpeechResult
			// .setText("Bạn yêu cầu tôi mở "
			// + "DU LỊCH"
			// + "\n"
			// + "Tôi sẽ mở trang tìm kiếm trong 3s tới");
			// // try {
			// // Thread.sleep(2000);
			// // if (searchActivity.touchOff(false)) {
			// // context.finish();
			// // } else {
			// // context.startActivity(intent_travel);
			// // }
			// context.startActivity(intent_travel);
			// // } catch (InterruptedException e) {
			// // e.printStackTrace();
			// // }
			//////////////////////////////////////////////////////

			for (int k = 0; k < arTravel.length; k++) {
				if (tvSpeech.getText().toString().contains(arTravel[k])) {
					tvSpeechResult.setText("Bạn muốn tìm " + arTravel[k]
							+ "? \n" + "Tôi sẽ mở trang tìm kiếm trong 1s tới");
					try {
						Thread.sleep(2000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					context.startActivity(intent_travel);
				}
			}
			 for (int k = 0; k < arATM.length; k++) {
			 if (tvSpeech.getText().toString().contains(arATM[k])) {
					tvSpeechResult.setText("Bạn muốn tìm " + arATM[k]
							+ "? \n" + "Tôi sẽ mở trang tìm kiếm trong 1s tới");
					try {
						Thread.sleep(2000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					context.startActivity(intent_atm);
				}
			 }
			 for (int k = 0; k < arFood.length; k++) {
			 if (tvSpeech.getText().toString().contains(arFood[k])) {
					tvSpeechResult.setText("Bạn muốn tìm " + arFood[k]
							+ "? \n" + "Tôi sẽ mở trang tìm kiếm trong 1s tới");
					try {
						Thread.sleep(2000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					context.startActivity(intent_food);
				}
			 }
			 for (int k = 0; k < arTaxi.length; k++) {
			 if (tvSpeech.getText().toString().contains(arTaxi[k])) {
					tvSpeechResult.setText("Bạn muốn tìm " + arTaxi[k]
							+ "? \n" + "Tôi sẽ mở trang tìm kiếm trong 1s tới");
					try {
						Thread.sleep(2000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					context.startActivity(intent_taxi);
				
			 }
			 }
			 for (int k = 0; k < arHotel.length; k++) {
			 if (tvSpeech.getText().toString().contains(arHotel[k])) {
					tvSpeechResult.setText("Bạn muốn tìm " + arHotel[k]
							+ "? \n" + "Tôi sẽ mở trang tìm kiếm trong 1s tới");
					try {
						Thread.sleep(2000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					context.startActivity(intent_hotel);
				
			 }
			 }
			 for (int k = 0; k < arLocation.length; k++) {
				 if (tvSpeech.getText().toString().contains(arLocation[k])) {
						tvSpeechResult.setText("Bạn muốn tìm " + arLocation[k]
								+ "? \n" + "Tôi sẽ mở trang tìm kiếm trong 1s tới");
						try {
							Thread.sleep(2000);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						((MainActivity) context).actionBar
						 .setSelectedNavigationItem(3);
				 }
			 
			 }
			 
			 for (int k = 0; k < arAbout.length; k++) {
				 if (tvSpeech.getText().toString().contains(arAbout[k])) {
						tvSpeechResult.setText("Tôi là robot Vietnam Travel Tools, người tạo ra tôi là Lưu Tấn Nguyên. \n" +
								"Tôi sẽ mở phần giới thiệu của hắn trong 3s tới");
						
						try {
							Thread.sleep(3000);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						((MainActivity) context).actionBar
						 .setSelectedNavigationItem(0);
				 }
			 
			 }
			 // }
			 

		}
		if (tvSpeechResult.getText().toString() == "") {
			tvSpeechResult
					.setText("Tôi không hiểu ý của bạn như thế nào vì chưa có dữ liệu. Để chính xác, bạn nên xem hướng dẫn cách ra lệnh cho tôi");
		}
		progressBarSearch.setVisibility(View.INVISIBLE);
	}

}
